home *** CD-ROM | disk | FTP | other *** search
Wrap
Text File | 1994-12-12 | 10.7 KB | 328 lines | [ TEXT/MPS ]
{ File: StandardFile.p Copyright: © 1984-1994 by Apple Computer, Inc. All rights reserved. Version: Built by: anonymous From: StandardFile.i, revision 2, dated 2/25/94 With Interfacer: 1.1d4e2 Bugs: Report bugs to Radar component “System Interfaces”, “Latest” List the version information from above in Problem Description. } {$IFC UNDEFINED UsingIncludes} {$SETC UsingIncludes := 0} {$ENDC} {$IFC NOT UsingIncludes} UNIT StandardFile; INTERFACE {$ENDC} {$IFC UNDEFINED __STANDARDFILE__} {$SETC __STANDARDFILE__ := 1} {$I+} {$SETC StandardFileIncludes := UsingIncludes} {$SETC UsingIncludes := 1} {$IFC UNDEFINED __TYPES__ } {$IFC UNDEFINED __TYPES__} {$I Types.p} {$ENDC} { ConditionalMacros.p } { MixedMode.p } { Traps.p } {$ENDC} {$IFC UNDEFINED __DIALOGS__ } {$IFC UNDEFINED __DIALOGS__} {$I Dialogs.p} {$ENDC} { Windows.p } { Quickdraw.p } { QuickdrawText.p } { IntlResources.p } { Events.p } { OSUtils.p } { Controls.p } { Menus.p } { TextEdit.p } {$ENDC} {$IFC UNDEFINED __FILES__ } {$IFC UNDEFINED __FILES__} {$I Files.p} {$ENDC} { SegLoad.p } {$ENDC} CONST { resource IDs and item offsets of pre-7.0 dialogs } putDlgID = -3999; putSave = 1; putCancel = 2; putEject = 5; putDrive = 6; putName = 7; getDlgID = -4000; getOpen = 1; getCancel = 3; getEject = 5; getDrive = 6; getNmList = 7; getScroll = 8; { resource IDs and item offsets of 7.0 dialogs } sfPutDialogID = -6043; sfGetDialogID = -6042; sfItemOpenButton = 1; sfItemCancelButton = 2; sfItemBalloonHelp = 3; sfItemVolumeUser = 4; sfItemEjectButton = 5; sfItemDesktopButton = 6; sfItemFileListUser = 7; sfItemPopUpMenuUser = 8; sfItemDividerLinePict = 9; sfItemFileNameTextEdit = 10; sfItemPromptStaticText = 11; sfItemNewFolderUser = 12; { pseudo-item hits for use in DlgHook } sfHookFirstCall = -1; sfHookCharOffset = $1000; sfHookNullEvent = 100; sfHookRebuildList = 101; sfHookFolderPopUp = 102; sfHookOpenFolder = 103; { the following are only in system 7.0+ } sfHookOpenAlias = 104; sfHookGoToDesktop = 105; sfHookGoToAliasTarget = 106; sfHookGoToParent = 107; sfHookGoToNextDrive = 108; sfHookGoToPrevDrive = 109; sfHookChangeSelection = 110; sfHookSetActiveOffset = 200; sfHookLastCall = -2; { the refcon field of the dialog record during a modalfilter or dialoghook contains one of the following } {$SETC sfMainDialogRefCon := 'stdf'} {$SETC sfNewFolderDialogRefCon := 'nfdr'} {$SETC sfReplaceDialogRefCon := 'rplc'} {$SETC sfStatWarnDialogRefCon := 'stat'} {$SETC sfLockWarnDialogRefCon := 'lock'} {$SETC sfErrorDialogRefCon := 'err '} TYPE {$ALIGN MAC68K} SFReply = PACKED RECORD good: BOOLEAN; copy: BOOLEAN; fType: OSType; vRefNum: INTEGER; version: INTEGER; fName: Str63; END; {$ALIGN RESET} {$ALIGN MAC68K} StandardFileReply = PACKED RECORD sfGood: BOOLEAN; sfReplacing: BOOLEAN; sfType: OSType; sfFile: FSSpec; sfScript: ScriptCode; sfFlags: INTEGER; sfIsFolder: BOOLEAN; sfIsVolume: BOOLEAN; sfReserved1: LONGINT; sfReserved2: INTEGER; END; {$ALIGN RESET} DlgHookProcPtr = ProcPtr; { FUNCTION DlgHook(item: INTEGER; theDialog: DialogPtr): INTEGER; } DlgHookUPP = UniversalProcPtr; CONST uppDlgHookProcInfo = $000003A0; { FUNCTION (2 byte param, 4 byte param): 2 byte result; } FUNCTION NewDlgHookProc(userRoutine: DlgHookProcPtr): DlgHookUPP; {$IFC USES68KINLINES } INLINE $2E9F; {$ENDC} FUNCTION CallDlgHookProc(item: INTEGER; theDialog: DialogPtr; userRoutine: DlgHookUPP): INTEGER; {$IFC USES68KINLINES} INLINE $205F, $4E90; {$ENDC} TYPE FileFilterProcPtr = ProcPtr; { FUNCTION FileFilter(PB: ParmBlkPtr): BOOLEAN; } FileFilterUPP = UniversalProcPtr; CONST uppFileFilterProcInfo = $000000D0; { FUNCTION (4 byte param): 1 byte result; } FUNCTION NewFileFilterProc(userRoutine: FileFilterProcPtr): FileFilterUPP; {$IFC USES68KINLINES } INLINE $2E9F; {$ENDC} FUNCTION CallFileFilterProc(PB: ParmBlkPtr; userRoutine: FileFilterUPP): BOOLEAN; {$IFC USES68KINLINES} INLINE $205F, $4E90; {$ENDC} { the following also include an extra parameter of "your data pointer" } TYPE DlgHookYDProcPtr = ProcPtr; { FUNCTION DlgHookYD(item: INTEGER; theDialog: DialogPtr; yourDataPtr: UNIV Ptr): INTEGER; } DlgHookYDUPP = UniversalProcPtr; CONST uppDlgHookYDProcInfo = $00000FA0; { FUNCTION (2 byte param, 4 byte param, 4 byte param): 2 byte result; } FUNCTION NewDlgHookYDProc(userRoutine: DlgHookYDProcPtr): DlgHookYDUPP; {$IFC USES68KINLINES } INLINE $2E9F; {$ENDC} FUNCTION CallDlgHookYDProc(item: INTEGER; theDialog: DialogPtr; yourDataPtr: UNIV Ptr; userRoutine: DlgHookYDUPP): INTEGER; {$IFC USES68KINLINES} INLINE $205F, $4E90; {$ENDC} TYPE ModalFilterYDProcPtr = ProcPtr; { FUNCTION ModalFilterYD(theDialog: DialogPtr; VAR theEvent: EventRecord; VAR itemHit: INTEGER; yourDataPtr: UNIV Ptr): BOOLEAN; } ModalFilterYDUPP = UniversalProcPtr; CONST uppModalFilterYDProcInfo = $00003FD0; { FUNCTION (4 byte param, 4 byte param, 4 byte param, 4 byte param): 1 byte result; } FUNCTION NewModalFilterYDProc(userRoutine: ModalFilterYDProcPtr): ModalFilterYDUPP; {$IFC USES68KINLINES } INLINE $2E9F; {$ENDC} FUNCTION CallModalFilterYDProc(theDialog: DialogPtr; VAR theEvent: EventRecord; VAR itemHit: INTEGER; yourDataPtr: UNIV Ptr; userRoutine: ModalFilterYDUPP): BOOLEAN; {$IFC USES68KINLINES} INLINE $205F, $4E90; {$ENDC} TYPE FileFilterYDProcPtr = ProcPtr; { FUNCTION FileFilterYD(PB: ParmBlkPtr; yourDataPtr: UNIV Ptr): BOOLEAN; } FileFilterYDUPP = UniversalProcPtr; CONST uppFileFilterYDProcInfo = $000003D0; { FUNCTION (4 byte param, 4 byte param): 1 byte result; } FUNCTION NewFileFilterYDProc(userRoutine: FileFilterYDProcPtr): FileFilterYDUPP; {$IFC USES68KINLINES } INLINE $2E9F; {$ENDC} FUNCTION CallFileFilterYDProc(PB: ParmBlkPtr; yourDataPtr: UNIV Ptr; userRoutine: FileFilterYDUPP): BOOLEAN; {$IFC USES68KINLINES} INLINE $205F, $4E90; {$ENDC} TYPE ActivateYDProcPtr = ProcPtr; { PROCEDURE ActivateYD(theDialog: DialogPtr; itemNo: INTEGER; activating: BOOLEAN; yourDataPtr: UNIV Ptr); } ActivateYDUPP = UniversalProcPtr; CONST uppActivateYDProcInfo = $000036C0; { PROCEDURE (4 byte param, 2 byte param, 1 byte param, 4 byte param); } FUNCTION NewActivateYDProc(userRoutine: ActivateYDProcPtr): ActivateYDUPP; {$IFC USES68KINLINES } INLINE $2E9F; {$ENDC} PROCEDURE CallActivateYDProc(theDialog: DialogPtr; itemNo: INTEGER; activating: BOOLEAN; yourDataPtr: UNIV Ptr; userRoutine: ActivateYDUPP); {$IFC USES68KINLINES} INLINE $205F, $4E90; {$ENDC} TYPE SFTypeList = ARRAY [0..3] OF OSType; {$IFC __cplusplus } {$ENDC} PROCEDURE SFPutFile(where: Point; prompt: ConstStr255Param; origName: ConstStr255Param; dlgHook: DlgHookUPP; VAR reply: SFReply); {$IFC USES68KINLINES} INLINE $3F3C, $0001, $A9EA; {$ENDC} PROCEDURE SFGetFile(where: Point; prompt: ConstStr255Param; fileFilter: FileFilterUPP; numTypes: INTEGER; typeList: SFTypeList; dlgHook: DlgHookUPP; VAR reply: SFReply); {$IFC USES68KINLINES} INLINE $3F3C, $0002, $A9EA; {$ENDC} PROCEDURE SFPPutFile(where: Point; prompt: ConstStr255Param; origName: ConstStr255Param; dlgHook: DlgHookUPP; VAR reply: SFReply; dlgID: INTEGER; filterProc: ModalFilterUPP); {$IFC USES68KINLINES} INLINE $3F3C, $0003, $A9EA; {$ENDC} PROCEDURE SFPGetFile(where: Point; prompt: ConstStr255Param; fileFilter: FileFilterUPP; numTypes: INTEGER; typeList: SFTypeList; dlgHook: DlgHookUPP; VAR reply: SFReply; dlgID: INTEGER; filterProc: ModalFilterUPP); {$IFC USES68KINLINES} INLINE $3F3C, $0004, $A9EA; {$ENDC} PROCEDURE StandardPutFile(prompt: ConstStr255Param; defaultName: ConstStr255Param; VAR reply: StandardFileReply); {$IFC USES68KINLINES} INLINE $3F3C, $0005, $A9EA; {$ENDC} PROCEDURE StandardGetFile(fileFilter: FileFilterUPP; numTypes: INTEGER; typeList: SFTypeList; VAR reply: StandardFileReply); {$IFC USES68KINLINES} INLINE $3F3C, $0006, $A9EA; {$ENDC} PROCEDURE CustomPutFile(prompt: ConstStr255Param; defaultName: ConstStr255Param; VAR reply: StandardFileReply; dlgID: INTEGER; where: Point; dlgHook: DlgHookYDUPP; filterProc: ModalFilterYDUPP; VAR activeList: INTEGER; activate: ActivateYDUPP; yourDataPtr: UNIV Ptr); {$IFC USES68KINLINES} INLINE $3F3C, $0007, $A9EA; {$ENDC} PROCEDURE CustomGetFile(fileFilter: FileFilterYDUPP; numTypes: INTEGER; typeList: SFTypeList; VAR reply: StandardFileReply; dlgID: INTEGER; where: Point; dlgHook: DlgHookYDUPP; filterProc: ModalFilterYDUPP; VAR activeList: INTEGER; activate: ActivateYDUPP; yourDataPtr: UNIV Ptr); {$IFC USES68KINLINES} INLINE $3F3C, $0008, $A9EA; {$ENDC} { StandardOpenDialog uses the 'open' resource ID=128 in your application for the type list } { It runs on all versions of sytem software since System 4.2 } FUNCTION StandardOpenDialog(VAR reply: StandardFileReply): OSErr; PROCEDURE sfpputfile(VAR where: Point; VAR prompt: CHAR; VAR origName: CHAR; dlgHook: DlgHookUPP; VAR reply: SFReply; dlgID: INTEGER; filterProc: ModalFilterUPP); C; PROCEDURE sfgetfile(VAR where: Point; VAR prompt: CHAR; fileFilter: FileFilterUPP; numTypes: INTEGER; typeList: SFTypeList; dlgHook: DlgHookUPP; VAR reply: SFReply); C; PROCEDURE sfpgetfile(VAR where: Point; VAR prompt: CHAR; fileFilter: FileFilterUPP; numTypes: INTEGER; typeList: SFTypeList; dlgHook: DlgHookUPP; VAR reply: SFReply; dlgID: INTEGER; filterProc: ModalFilterUPP); C; PROCEDURE sfputfile(VAR where: Point; VAR prompt: CHAR; VAR origName: CHAR; dlgHook: DlgHookUPP; VAR reply: SFReply); C; { New StandardFile routine comments: activeList is pointer to array of integer (16-bits). first integer is length of list. following integers are possible activatable DITL items, in the order that the tab key will cycle through. The first in the list is the item made active when dialog is first shown. activateProc is a pointer to a procedure like: PROCEDURE MyActivateProc(theDialog: DialogPtr; itemNo: INTEGER; activating: BOOLEAN; yourDataPtr: Ptr); The activateProc is called with activating=FALSE on the itemNo about to deactivate then with activating=TRUE on the itemNo about to become the active item. (like activate event) yourDataPtr is a nice little extra that makes life easier without globals. CustomGetFile & CustomPPutFile when calling any of their call back procedures, pushes the extra parameter of yourDataPtr on the stack. In addition the filterProc in CustomGetFile & CustomPPutFile is called before before SF does any mapping, instead of after. } {$IFC __cplusplus } {$ENDC} {$SETC UsingIncludes := StandardFileIncludes} {$ENDC} {__STANDARDFILE__} {$IFC NOT UsingIncludes} END. {$ENDC}